package thread;

public class Demo8 {
    //这是成员变量,此时就不是变量捕获的语法了，而是内部类访问外部类的属性，就没有final之类的限制了
    private static boolean isQuit = false;
    public static void main(String[] args) {
        //lambda表达式里面的代码，是可以自动捕获到上层作用域中所设计的局部变量的（实际就是把该变量复制了一份）
        //变量捕获语法实际上只能捕获一个final或者实际上是final的变量
        Thread thread = new Thread(() -> {
            //final 变量 - 不可修改
            //boolean isQuit = false;
            while (!isQuit) {
                System.out.println("线程执行中");
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
                System.out.println("线程工作完毕");
            }
        });
        thread.start();
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
        isQuit = true;
        System.out.println("设置isQuit 为 true");
    }
}
//这种方法并不及时，在sleep的不会收到通知